#ifndef CONFIGURATIONFRAME_H_
#define CONFIGURATIONFRAME_H_

#include <gtkmm.h>
#include <gtkmm/adjustment.h>

#include "BoardConfiguration.h"
#include "GeneralConfiguration.h"

class ConfigurationFrame: public Gtk::Frame {
  public:
    ConfigurationFrame();
    ~ConfigurationFrame();

	/* Devuelve la configuración seteada para el nivel */
    GeneralConfiguration* obtenerConfiguracion();
	
	/* Setea la configuración para el nivel */
	void setConfiguracion(GeneralConfiguration* gc);
	
	/* Validaciones de configuración del nivel, devuelve error en el strin */
    bool validar(std::string &error);

  protected:
    //Member widgets:
    Gtk::VBox mainVBox;
    Gtk::HBox configuracionHBox;
    Gtk::HBox probabilidadesHBox;

    Gtk::Frame configuracionFrame;
    Gtk::Frame generalFrame;
    Gtk::Frame probabilidadesFrame;
    Gtk::Frame celdaFrame;
    Gtk::Frame columnaFrame;

    Gtk::Table generalTable;
    Gtk::Table celdaTable;
    Gtk::Table columnaTable;

    Gtk::Label nombreNivelLabel;
    Gtk::Label imagenFondoLabel;
    Gtk::Label puntajeRequeridoLabel;
    Gtk::Label maximoJugadoresLabel;
    Gtk::Label cantidadFilasLabel;
    Gtk::Label cantidadColumnasLabel;
	Gtk::Label sonidoMovimientoLabel;
	Gtk::Label sonidoCombinacionLabel;

    Gtk::Label celdaRedLabel;
    Gtk::Label celdaYellowLabel;
    Gtk::Label celdaGreenLabel;
    Gtk::Label celdaBlueLabel;
    Gtk::Label celdaVioletLabel;

    Gtk::Label columnaRedLabel;
    Gtk::Label columnaYellowLabel;
    Gtk::Label columnaGreenLabel;
    Gtk::Label columnaBlueLabel;
    Gtk::Label columnaVioletLabel;

    Gtk::Label celdaButtonLabel;
    Gtk::Label celdaMiniBarLabel;
    Gtk::Label celdaGoldenStarLabel;

    Gtk::Label columnaButtonLabel;
    Gtk::Label columnaMiniBarLabel;
    Gtk::Label columnaGoldenStarLabel;

    Gtk::HSeparator celdaSeparator;
    Gtk::HSeparator columnaSeparator;

    Gtk::Entry nombreNivelEntry;

    Gtk::SpinButton celdaRedButtonSpinButton;
    Gtk::SpinButton celdaYellowButtonSpinButton;
    Gtk::SpinButton celdaGreenButtonSpinButton;
    Gtk::SpinButton celdaBlueButtonSpinButton;
    Gtk::SpinButton celdaVioletButtonSpinButton;

    Gtk::SpinButton columnaRedButtonSpinButton;
    Gtk::SpinButton columnaYellowButtonSpinButton;
    Gtk::SpinButton columnaGreenButtonSpinButton;
    Gtk::SpinButton columnaBlueButtonSpinButton;
    Gtk::SpinButton columnaVioletButtonSpinButton;

    Gtk::SpinButton celdaRedMiniBarSpinButton;
    Gtk::SpinButton celdaYellowMiniBarSpinButton;
    Gtk::SpinButton celdaGreenMiniBarSpinButton;
    Gtk::SpinButton celdaBlueMiniBarSpinButton;
    Gtk::SpinButton celdaVioletMiniBarSpinButton;

    Gtk::SpinButton columnaRedMiniBarSpinButton;
    Gtk::SpinButton columnaYellowMiniBarSpinButton;
    Gtk::SpinButton columnaGreenMiniBarSpinButton;
    Gtk::SpinButton columnaBlueMiniBarSpinButton;
    Gtk::SpinButton columnaVioletMiniBarSpinButton;

    Gtk::SpinButton celdaGoldenStarSpinButton;
    Gtk::SpinButton columnaGoldenStarSpinButton;

    Gtk::FileChooserButton imagenFondoFileChooser;
	Gtk::FileChooserButton sonidoMovimientoFileChooser;
	Gtk::FileChooserButton sonidoCombinacionFileChooser;

    Gtk::SpinButton puntajeRequeridoSpinButton;
    Gtk::SpinButton maximoJugadoresSpinButton;
    Gtk::SpinButton cantidadFilasSpinButton;
    Gtk::SpinButton cantidadColumnasSpinButton;
};

#endif
